1. Field of the Invention
The present invention relates to encryption processing apparatuses, encryption processing methods, and computer programs. More specifically, the present invention relates to an encryption processing apparatus, an encryption processing method, and a computer program for performing common-key blockcipher processing.
2. Description of the Related Art
With the recent development of network communication and electronic transactions, there has arisen a serious problem of maintenance of security in communication. Cryptography is one of methods used in the maintenance of security, and currently communication using various cryptographic techniques is actually performed.
For example, there have been put into practical use systems in which an encryption module is embedded in a compact device such as an integrated circuit (IC) card so that data is transmitted and received between the IC card and a reader/writer serving as a data read/write device to perform authentication or encryption and decryption of transmission and received data.
There are various cryptographic algorithms. The algorithms are roughly classified into public-key cryptography in which encryption and decryption keys are set as different keys, e.g., a public key and a secret key, and common-key cryptography in which a common key is used as both an encryption key and a decryption key.
There are various algorithms in common-key cryptography. In one of such algorithms, a plurality of keys are generated based on a common key and data transformation is repeated in units of blocks (64 bits, 128 bits, etc.) using the generated plurality of keys. A typical algorithm using such key generation and data transformation is common-key blockcipher cryptography.
Examples of common common-key blockcipher algorithms include the Data Encryption Standard (DES) algorithm, which was the U.S. encryption standard, and the Advanced Encryption Standard (AES) algorithm, which is now the U.S. standard.
Such a common-key blockcipher algorithm is mainly composed of an encryption processing part including round-function executing parts that repeatedly transform input data, and a key scheduling part generating a round key used for each of the rounds corresponding to the round-function executing parts. The key scheduling part first generates an expanded key with an increased number of bits on the basis of a master key (primary key), which is a secret key, and then generates a round key (sub-key) used for each of the round-function executing parts of the encryption processing part on the basis of the generated expanded key.
There is a specific structure of the related art for implementing the algorithm, in which a round function including a linear transformation part and a non-linear transformation part is iterated. One typical structure is a Feistel structure. The Feistel structure is a structure in which plaintext is transformed into ciphertext using simple iterated round functions (F-functions) serving as data transformation functions. In each of the round functions (F-functions), linear transformation and non-linear transformation are performed. Ciphers with the Feistel structure are disclosed in, for example, K. Nyberg, “Generalized Feistel networks”, ASIACRYPT '96, Springer-Verlag, 1996, pp. 91-104; and Yuliang Zheng, Tsutomu Matsumoto, and Hideki Imai, “On the Construction of Block Ciphers Provably Secure and Not Relying on Any Unproved Hypotheses”, CRYPTO 1989: 461-480.
One problem with common-key blockciphers is key leakage due to cryptanalysis. The problem of being easy to break keys by cryptanalysis leads to low cryptographic security, and is serious in practice.